<?php

namespace Agi\Config;


/**
 * 配置接口
 *
 * @package Agi\Config
 * @author  Janpoem created at 2015/3/11 6:12
 */
interface Impl
{

    /** 默认的访问名 */
    const DEFAULT_NAME = 'default';

    /**
     * 构造唯一ID
     *
     * 每个具体配置类自行管理如何生成唯一ID的方法
     *
     * @param string|null $name
     *
     * @return string
     */
    public static function mkId($name = null);

    /**
     * 读取本类配置的实例
     *
     * @param string|null $name
     *
     * @return Impl
     */
    public static function get($name = null);

    /**
     * 定义配置
     *
     * @param string|null $name
     * @param array       $data
     *
     * @return bool 是否添加成功
     */
    public static function define($name = null, array $data = array());

    /**
     * 定义多个配置
     *
     * @param array $data
     *
     * @return mixed
     */
    public static function defineMulti(array $data);

    /**
     * 取得当前实例唯一ID
     *
     * @return string
     */
    public function getId();


}

 